1. Field of the Invention
This invention relates to process control. More particularly, this invention relates to process control in Systems within which the process control is broken down into a plurality of discrete entities that cooperate together to yield the overall function.
2. Discussion of Prior Art
It is known in Object Oriented Programming (OOP) techniques to sub-divide a computer program into program objects. These program objects then interact with one another to provide the desired functionality. Computer hardware operating under control of such software can be considered as a process control apparatus responsive to various input signals (e.g. keystrokes) to perform a process thereupon to yield output signals (e.g. signals controlling the operation of a machine or driving a display device).
The program objects within OOP systems are designed to have a fixed data input interface, a fixed dam output interface and be responsive to fixed program calls whilst masking other aspects of their form and operation from the other objects in the system. Such techniques have considerably improved the ability to re-use computer program code between different systems and have simplified maintenance, de-bugging and other issues involved in computer program development.
Within OOP systems it is known to operate such that objects issue calls to other objects passing data of a predefined format to the object being called. The called object then performs a processing operation upon the data passed to it before issuing its outputs and passing control to another object. With this top down approach it is necessary that an object that will issue a call to another object is preconfigured such that the data that needs to be passed to the called object is predefined and the function that will be triggered is integrated with functions that are being performed by the calling object. The top down approach has the result that considerable work it required when new objects are added to the system to modify existing objects to use those new objects. Furthermore, OOP systems need to be developed to co-ordinate the activities of all of the objects within the system and with careful design of the flow of control between objects. OOP systems are not well suited to adaptive/genetic programs techniques.
Another known programming technique that may be used to control the processes performed using a computer is that of neural networks. Neural networks use a model of layers of interconnected nodes exchanging weighted signals with the weighting for signals passing between nodes being modulated by a feedback mechanism. Whilst such neural networks provide a degree of self adaptation to the tasks being performed, they again rely on a top down control approach to the connections between nodes and the scheduling of the signal exchanges between nodes. Once a neural network has been established it is difficult to change its configuration.
Viewed from one aspect the invention provides a process control apparatus comprising:
a plurality of process cells, each process cell including at least one data input, at least one state variable, programmable logic for updating said at least one state variable in dependence upon said at least one data input, at least one data output for outputting data dependent upon said at least one state variable and a programmable link for each said data input specifying a source from which said at least one data input receives data; and
a scheduler for triggering said plurality of process cells as a whole to update their state variables whereby each of said plurality of process cells autonomously updates its state variables in dependence upon its at least one data input using its programmable logic to generate its at least one data output, wherein
at least one of said plurality of process cells comprises a parent process cell that contains at least one child process cell, at least one of which child process cells having at least one of a data input of said child process cell connected to a data input of said parent process cell and a data output of said child process cell connected to a data output of said parent process cell.
The invention breaks down the process to be performed into a plurality of process cells. Each of these process cells is self contained in that it fully specifies its inputs, outputs, state variables and processing logic as well as specifying the links indicating the sources for each of its inputs. Providing the process cells with the above features enables them to act autonomously to update their variables without requiring outside control. This greatly eases that task of modifying or enlarging the system by adding further process cells since the existing process cells need not be modified. Furthermore, since the links are embedded within the process cells there is no predefined flow of control requiring modification as the system is adapted. The process cells as a whole merely need triggering to update themselves and thereafter can act autonomously without any higher level control until they are all updated.
Avoiding the need for an overall management level within the system that coordinates the action of all of the process cells considerably simplifies the development and modification of the system. Furthermore, as systems increase in the number of process cells they contain, the approach of the invention assists in reducing the normally exponential increase in complexity that is associated with such growth since modifications are localised to only the new process cells and those existing process cells that may want to receive inputs from the new process cells rather than extending through the entire system.
The autonomous nature of the process cells is enhanced by providing for parent process cells that contain child process cells. The child process cells within the parent process cell allow the functionality that must be provided by the parent cell to be split between the child process cells and also allows the co-operative and adaptive way in which child process cells interact to be exploited in providing the functionality required of the parent process cell. The parent process cell together with its child process cells may also be moved as a single entity between systems.
The invention is particularly suitable for use in embodiments in which one or more of said process cells are mutable process cells that, during operation, mutate so as to change one or more of said at least one data input, said at a least one state variable, said programmable logic, said at least one data output and said programmable link.
The provision of mutable process cells that are able to randomly modify themselves would normally be an anathema to the designers of such systems. Mutation of objects within an OOP system would normally be viewed as corruption of the program and would cause great problems. However, since the process cells of the present invention are highly autonomous, mutation within the process cells has a much more localised effect and can be considered a positive advantage in adaptive systems.
In order to assist in the robustness of the system to cope with mutation, it is preferred that said mutable process cells include programmable logic controlled by a sequence of program instruction words of an instruction set, said instruction set having opcode words identifying operations to be performed and operand words identifying variables to be manipulated in said operations, each opcode word having a default value if parsing of said sequence of program instruction words requires that said opcode word is interpreted as an operand word and each operand word having a default action if parsing of said sequence of program instruction words does not specify an opcode word using said operand word, whereby mutation of said sequence of program instruction words does not render said logic inoperative.
Providing the programmable logic within the mutable process cells to have the above characteristics ensures that the process cells remain operative whatever mutation occurs within their logic. It will be appreciated that the operand words May specify constants as well as true variables.
The source of the data inputs for each process cell may be the data output of another process cell. This is the case for the majority of such data inputs. However, there are circumstances in which it is highly desirable that a source of a data input should be an extra-cellular state variable shared by a plurality of process cells.
Such extra-cellular state variables provide a diffuse feedback mechanism for controlling process cell behaviour across a plurality of process cells. This feature combined with the mutable nature of process cells is strongly advantageous in modulating the development of adaptive systems. The extra-cellular state variables can provide feedback as to how well the entire system is achieving its overall desired results without having to be targeted to specific process cells within the overall system.
In order to improve the flexibility of the development of systems it is preferred that said logic comprises one of compiled program instruction words, interpreted program instruction words and a program call to a routine defined outside of a process cell.
Whilst it will be appreciated that the process cells and scheduler operating on a general purpose computer can provide a process control apparatus having a great variety of possible uses, the present invention is particularly suited for use in the simulation of physical systems and in providing neural networks. When simulating physical systems the process cells may be made to correspond to physical elements of the system being simulated. In the circumstances, the data output from a physical element may merely be output that is directed towards a system that is used to visualise the simulation. The ability to readily add process cells to a system allows the simulation to be grown without having to consider the effect other than in the local area of the new process cells and also provides the ability to add process cells whilst a simulation is actually running. The self contained nature of the process cells that facilitates adaption of the process cells (e.g. through mutation) renders this technique particularly suitable for neural networks that are specifically intended to adapt themselves in use.
Improved adaptive performance is achieved by embodiments in which within a process cell said programmable logic multiplies data received at a data input by a weighting coefficient having a rest value, said weighting coefficient being modulated by modulating data received at other data inputs of said process cell to provide a fast feedback mechanism whereby said weighting coefficient is changed by said modulating data and then relaxes towards said rest value in accordance with a first time constant and a slow feedback mechanism whereby said rest value relaxes towards said weighting coefficient in accordance with a second time constant, said second time constant being treater than said first time constant.
The above techniques are particularly suited for operating to simulate a tessellated virtual environment using a plurality of client computers and a server computer, wherein each client computer contains those process cells relevant to a region currently being simulated by said client computer and client computers within a region interacting via peer-to peer communication, said server serving to pass identification data to and maintain in those client computers, said identification data serving to identify the client computers within said environment to enable peer-to-peer communication therebetween as client computers move between different regions of said tessellated virtual environment.
Viewed from another aspect the invention provides a process control method for controlling a plurality of process cells, each process cell including at least one data input, at least one state variable, programmable logic for updating said at least one state variable in dependence upon said at least one data input, at least one data output for outputting data dependent upon said at least one state variable and a programmable link for each said data input specifying a source from which said at least one data input receives data, said method comprising the step of:
triggering said plurality of process cells as a whole to update their state variables whereby each of said plurality of process cells autonomously updates its state variables in dependence upon its at least one data input using its programmable logic to generate its at least one data output, wherein
at least one of said plurality of process cells comprises a parent process cell that contains at least one child process cell, at least one of which child process cells having at least one of a data input of said child process cell connected to a data input of said parent process cell and a data output of said child process cell connected to a data output of said parent process cell.